package cn.rocky.zuosheng;

import java.util.Stack;

/**
 * 题目: 用一个栈实现另一个栈的排序
 *      一个栈中元素的类型为整形,现在想将该栈从顶到底按从大到小到顺序排序,只许申请一个栈。
 *      除此之外,可以申请新到变量,但不能申请额外但数据结构。
 */
public class CodeSortStack {

    public static void sortStackByStack(Stack<Integer> stack) {
        Stack<Integer> helpStack = new Stack<>();
        while (!stack.isEmpty()) {
            int cur = stack.pop();
            while (!helpStack.isEmpty() && helpStack.peek() > cur) {
                stack.push(helpStack.pop());
            }
            helpStack.push(cur);
        }
        while (!helpStack.isEmpty()) {
            stack.push(helpStack.pop());
        }
    }
}
